package br.com.utfpr.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import br.com.utfpr.data.Pessoa;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class PessoaController {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	PessoaOpenHelper pessoaOpenHelper;
	public static final String SEPARADOR = "'";
	
	public PessoaController(Context context){
		pessoaOpenHelper = new PessoaOpenHelper(context);		
	}	
	
	public void cadastrar(Pessoa pessoa){
		 SQLiteDatabase dataBase = pessoaOpenHelper.getWritableDatabase();  	
         
		 ContentValues content = new ContentValues();
		
		 content.put("nome", pessoa.getNome());
		 content.put("endereco", pessoa.getEndereco());
		 content.put("telefone", pessoa.getTelefone());
		 content.put("cidade", pessoa.getCidade());
		 content.put("estado", pessoa.getEstado());
		 content.put("latitude", pessoa.getLatitude());
		 content.put("longitude", pessoa.getLongitude());
		 content.put("data", System.currentTimeMillis());

		 dataBase.insert(PessoaOpenHelper.PESSOA_TABLE_NAME, null, content);
		 dataBase.close();
	}
	
	public void atualizar(Pessoa pessoa){
		 SQLiteDatabase dataBase = pessoaOpenHelper.getWritableDatabase();  	
        
		 ContentValues content = new ContentValues();
		 
		 content.put("nome", pessoa.getNome());
		 content.put("endereco", pessoa.getEndereco());
		 content.put("telefone", pessoa.getTelefone());
		 content.put("cidade", pessoa.getCidade());
		 content.put("estado", pessoa.getEstado());
		 content.put("latitude", pessoa.getLatitude());
		 content.put("longitude", pessoa.getLongitude());
		 content.put("data", System.currentTimeMillis());
		 
		 String where = "id=?";
		 String [] whereArgs = {Integer.toString(pessoa.getId())}; 
		 
		 dataBase.update(PessoaOpenHelper.PESSOA_TABLE_NAME, content, where, whereArgs);
		}
	
	public List<Pessoa> consultar(){
		List<Pessoa> pessoas = new ArrayList<Pessoa>();
		
		SQLiteDatabase dataBase = pessoaOpenHelper.getReadableDatabase();  	
        
		String [] colunas = {"id", "nome", "endereco", "telefone", "cidade", "estado", "latitude", "longitude", "data"};
				 
		Cursor resultados = dataBase.query(PessoaOpenHelper.PESSOA_TABLE_NAME, colunas, null, null, null, null, "id");
		
		while(resultados.moveToNext()){
			 int id = resultados.getInt(0);
		     String name = resultados.getString(1);
		     String address = resultados.getString(2);
		     String telephone = resultados.getString(3);
		     String city = resultados.getString(4);
		     String state = resultados.getString(5);
		     String latitude = resultados.getString(6);
		     String longitude = resultados.getString(7);
		     long time = resultados.getLong(8);
		     
		     pessoas.add(new Pessoa(name,address,telephone,city,state,latitude,longitude,time,id));
		}
	
		dataBase.close();
	    return pessoas;
	}

	public void salvarOuAtualizar(Pessoa pessoa) {
		List<Pessoa> pessoasServerLocal = consultar();
		
		if(pessoasServerLocal.contains(pessoa)){
			atualizar(pessoa);
		}
		else{
			cadastrar(pessoa);
		}
		
	}
}
